import request from '@/utils/request'

// 登录请求参数
export interface LoginRequest {
  username: string
  password: string
}

// 登录响应数据
export interface LoginResponse {
  token: string
  username: string
  role: string
}

// 登录
export function login(data: LoginRequest) {
  return request<LoginResponse>({
    url: '/api/auth/login',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'application/json'
    },
    transformResponse: [(data) => {
      try {
        console.log('原始响应数据:', data)
        const parsed = JSON.parse(data)
        console.log('解析后的响应数据:', parsed)
        
        // 检查响应格式
        if (!parsed || typeof parsed !== 'object') {
          throw new Error('响应数据格式错误')
        }
        
        // 检查必要字段
        if (!parsed.token || !parsed.username || !parsed.role) {
          throw new Error('响应数据缺少必要字段')
        }
        
        // 保存 token 到 localStorage
        localStorage.setItem('token', parsed.token)
        
        return parsed
      } catch (e) {
        console.error('解析响应数据失败:', e, '原始数据:', data)
        throw new Error('解析响应数据失败')
      }
    }]
  })
}

// 登出
export function logout() {
  localStorage.removeItem('token')
  return request({
    url: '/api/auth/logout',
    method: 'post'
  })
}

// 获取当前用户信息
export function getUserInfo() {
  return request({
    url: '/api/auth/user',
    method: 'get'
  })
} 